package com.baidu.user.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.baidu.user.pojo.User;
import com.baidu.user.service.UserServiceI;
import com.baidu.util.HttpUtil;
import com.baidu.util.Md5Util;
import com.baidu.util.Unbind;

import net.sf.json.JSONObject;

@Controller
@RequestMapping("user")
public class UserController {
	
	@Autowired
	private UserServiceI service;
	
	
	/**
	 * 
	 * @author 刘鹏
	 * @date 2016年7月1日  上午8:46:31
	 * @function  去注册页面
	 */
	@RequestMapping("toRegisterPage")
	public String toRegisterPage(){
		
		return "user/register";
	}
	
	
	/**
	 * 
	 * @author 刘鹏
	 * @return 
	 * @date 2016年7月1日  上午10:25:18
	 * @function  注册用户
	 */
	@RequestMapping("addUser")
	@ResponseBody
	public boolean addUser(User user){

		 user.setId(System.currentTimeMillis()+"");
		 int i = service.addUser(user);
		 return i>0?true:false;
	}
	
	
	/**
	 * 
	 * @author 刘鹏
	 * @date 2016年7月1日  下午2:29:50
	 * @function 跳转到登陆页面
	 */
	@RequestMapping("toLogin")
	public String toLogin(){
		
		return "user/login";
	}
	
	
	/**
	 * 
	 * @author 刘鹏
	 * @date 2016年7月1日  下午7:39:12
	 * @function 登陆
	 */
	@RequestMapping("login")
	public String login(User user, HttpServletRequest request){
		
		user.setEmail(user.getPhone());
		User user2 = service.login(user);
		if (user2!=null) {
			request.getSession().setAttribute("user", user2);
			return "forward:/index.jsp";		
		}
		return "redirect:/user/toLogin.action";
	}
	
	
	/**
	 * 
	 * @author 刘鹏
	 * @date 2016年7月5日  下午7:08:16
	 * @function  第三方登陆
	 */
	@RequestMapping("userLogin")
	public String userLogin(String code, HttpServletRequest request) {
		
		//根据code获取Access Token
		String url = "https://openapi.baidu.com/social/oauth/2.0/token";
		Map<String, String> map = new HashMap<String, String>();
		map.put("grant_type", "authorization_code");
		map.put("code", code);
		map.put("client_id", "e5cRCKuqfYGvKxWrm4KXXQF3");
		map.put("client_secret", "ChEw0uHkKhTHunEMp1pVxP0LsNu1P8jB");
		map.put("redirect_uri", "http://127.0.0.1:8080/mobile-manage-web/user/userLogin.action");	
		String json = HttpUtil.post(url, map);
		//解析Json字符串得到Access Token
		String access_token = JSONObject.fromObject(json).get("access_token").toString();
	    System.out.println(json);
         //通过令牌获取第三方平台用户信息
		 url="https://openapi.baidu.com/social/api/2.0/user/info";
		 map.clear();
		 map.put("access_token", access_token);
		 json = HttpUtil.post(url, map);
		 System.out.println(json);
		 JSONObject jsonObject = JSONObject.fromObject(json);
		 String media_uid = jsonObject.get("media_uid").toString();
		 String social_uid = jsonObject.get("social_uid").toString();
		 String headurl = jsonObject.get("headurl").toString();
		 String username = jsonObject.get("username").toString();

		 //查询用户绑定状态
		url = "https://openapi.baidu.com/social/api/2.0/user/bind_status";
		json = HttpUtil.post(url, map);
		System.out.println("用户绑定状态---------"+json);
		  //判断用户是否绑定
		if(jsonObject.fromObject(json).containsKey("error_code")){
			
			//进行绑定
			url = "https://openapi.baidu.com/social/api/2.0/user/bind";
			map.clear();
			map.put("access_token", access_token);
			map.put("uid", media_uid);
			String md5 = Md5Util.getMD5(media_uid+"ChEw0uHkKhTHunEMp1pVxP0LsNu1P8jB");
			map.put("uid_sign", md5);		
			url = "https://openapi.baidu.com/social/api/2.0/user/bind";
			json = HttpUtil.post(url, map);
		    
			//补全用户信息
			request.setAttribute("headurl", headurl);
			request.setAttribute("social_uid", social_uid);
			request.setAttribute("username", username);
		    return "user/info_complete";
		} else {
			 //social_uid社会化平台ID是唯一的
	         User user = service.getUserInfo(social_uid);
	         request.getSession().setAttribute("user", user);
		     return "redirect:/index.jsp";
		}
		
			 
	}
	
	
	/**
	 * 注销登陆
	 * @author 刘鹏
	 * @date 2016年7月15日  上午8:04:43
	 * @function
	 */
	@RequestMapping("exit")
	public String exit(HttpSession session) {
		
		session.invalidate();
		return "redirect:/index.jsp";
	}



}
